// utils/translate.js
import axios from 'axios';

const API_URL = 'http://10.255.66.12:8087/niutrans/textTranslation';
const API_KEY = '83089791f06b4296878fcd4cf61fae54';

// 翻译请求函数,
// 1.text:需要翻译的文本，可以接收纯文本和html格式的文本；
// 2.from:发来的是什么语言，'zh'-中文；'en'-英文；'ru'-俄文；
// 3.targetLang:目标语言；
// 4.type:文本的类别：1.普通文本；2.html文本；
export async function translate(text, from, targetLang,type) {
    if (type===1){
        try {
            const response = await axios.post(API_URL, {
                    src_text: text,
                    to: targetLang,
                    from: from,
                    realmCode: 0,
                    contrastFlag: true
                }, {
                    params: {
                        apikey: API_KEY
                    }
                });
            //需要把所有翻译的内容组合成文本
            let translateText=''
            for (let i = 0; i < response.data.data.length; i++) {
                for (let j = 0; j < response.data.data[i].sentences.length; j++) {
                    translateText=translateText+response.data.data[i].sentences[j].data
                }
            }
                return translateText
        }
        catch (error) {
            return '翻译失败/translation failed/Ошибка перевода'
        }
    }
    // 类型2：HTML文本翻译
    else if (type === 2) {
        const div = document.createElement('div');
        div.innerHTML = text

        // 创建DOM解析器
        const parser = new DOMParser();
        const doc = parser.parseFromString(div.innerHTML, 'text/html');

        // 遍历并处理所有文本节点
        // eslint-disable-next-line no-unused-vars
        const traverseNodes = (node, callback) => {
            callback(node);
            for (let i = 0; i < node.childNodes.length; i++) {
                traverseNodes(node.childNodes[i], callback);
            }
        };
        // 同步文本内容
        const syncTextContent = async (originalText) => {
            // 调用type=1的翻译接口
            const translated = await translate(originalText, from, targetLang, 1);
            return translated || originalText; // 翻译失败时保留原文
        };
        // 递归处理所有文本节点
        const processNodes = async (node) => {
            if (node.nodeType === Node.TEXT_NODE) {
                // 跳过script/style标签内容
                if (!['SCRIPT', 'STYLE'].includes(node.parentNode?.nodeName)) {
                    node.textContent = await syncTextContent(node.textContent);
                }
            } else {
                for (let i = 0; i < node.childNodes.length; i++) {
                    await processNodes(node.childNodes[i]);
                }
            }
        };
        // 执行节点处理
        await processNodes(doc.body);

        // 序列化处理后的DOM
        return new XMLSerializer().serializeToString(doc.body);
    }
}

// 直接导出函数（不使用插件模式）
export default translate;